<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>GBufferedInputStream</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="index.html" title="GIO Reference Manual">
<link rel="up" href="streaming.html" title="Streaming I/O">
<link rel="prev" href="GMemoryOutputStream.html" title="GMemoryOutputStream">
<link rel="next" href="GBufferedOutputStream.html" title="GBufferedOutputStream">
<meta name="generator" content="GTK-Doc V1.9 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
<link rel="part" href="pt01.html" title="Part&#160;I.&#160;GIO Overview">
<link rel="chapter" href="ch01.html" title="Introduction">
<link rel="chapter" href="ch02.html" title="Compiling GIO applications">
<link rel="chapter" href="ch03.html" title="Running GIO applications">
<link rel="chapter" href="gio-extension-points.html" title="Extending GIO">
<link rel="part" href="pt02.html" title="Part&#160;II.&#160;API Reference">
<link rel="chapter" href="file_ops.html" title="File Operations">
<link rel="chapter" href="file_mon.html" title="File System Monitoring">
<link rel="chapter" href="async.html" title="Asynchronous I/O">
<link rel="chapter" href="streaming.html" title="Streaming I/O">
<link rel="chapter" href="types.html" title="File types and applications">
<link rel="chapter" href="volume_mon.html" title="Volumes and Drives">
<link rel="chapter" href="icons.html" title="Icons">
<link rel="chapter" href="utils.html" title="Utilities">
<link rel="chapter" href="extending.html" title="Extending GIO">
<link rel="part" href="migrating.html" title="Part&#160;III.&#160;Migrating to GIO">
<link rel="chapter" href="ch14.html" title="Migrating from POSIX to GIO">
<link rel="chapter" href="ch15.html" title="Migrating from GnomeVFS to GIO">
<link rel="chapter" href="gio-hierarchy.html" title="Object Hierarchy">
<link rel="index" href="ix01.html" title="Index">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="GMemoryOutputStream.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="streaming.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GIO Reference Manual</th>
<td><a accesskey="n" href="GBufferedOutputStream.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts"><nobr><a href="#id2808717" class="shortcut">Top</a>
                  &#160;|&#160;
                  <a href="#id2858845" class="shortcut">Description</a>
                  &#160;|&#160;
                  <a href="#id2856963" class="shortcut">Object Hierarchy</a>
                  &#160;|&#160;
                  <a href="#id2858814" class="shortcut">Properties</a></nobr></td></tr>
</table>
<div class="refentry" lang="en">
<a name="GBufferedInputStream"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2>
<a name="id2808717"></a><span class="refentrytitle">GBufferedInputStream</span>
</h2>
<p>GBufferedInputStream &#8212; Buffered Input Stream</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">

#include &lt;gio/gio.h&gt;


                    <a class="link" href="GBufferedInputStream.html#GBufferedInputStream-struct">GBufferedInputStream</a>;
<a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a>*       <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-new">g_buffered_input_stream_new</a>         (<a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a> *base_stream);
<a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a>*       <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-new-sized">g_buffered_input_stream_new_sized</a>   (<a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a> *base_stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> size);
<a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a>               <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-get-buffer-size">g_buffered_input_stream_get_buffer_size</a>
                                                        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream);
void                <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-set-buffer-size">g_buffered_input_stream_set_buffer_size</a>
                                                        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> size);
<a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a>               <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-get-available">g_buffered_input_stream_get_available</a>
                                                        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream);
const void*         <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-peek-buffer">g_buffered_input_stream_peek_buffer</a> (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> *count);
<a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a>               <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-peek">g_buffered_input_stream_peek</a>        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         void *buffer,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> offset,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> count);
<a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
>gssize</a>              <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-fill">g_buffered_input_stream_fill</a>        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
>gssize</a> count,
                                                         <a class="link" href="GCancellable.html" title="GCancellable">GCancellable</a> *cancellable,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
>GError</a> **error);
void                <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-fill-async">g_buffered_input_stream_fill_async</a>  (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
>gssize</a> count,
                                                         int io_priority,
                                                         <a class="link" href="GCancellable.html" title="GCancellable">GCancellable</a> *cancellable,
                                                         <a class="link" href="GAsyncResult.html#GAsyncReadyCallback">GAsyncReadyCallback</a> callback,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
>gpointer</a> user_data);
<a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
>gssize</a>              <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-fill-finish">g_buffered_input_stream_fill_finish</a> (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a class="link" href="GAsyncResult.html" title="GAsyncResult">GAsyncResult</a> *result,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
>GError</a> **error);
int                 <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-read-byte">g_buffered_input_stream_read_byte</a>   (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a class="link" href="GCancellable.html" title="GCancellable">GCancellable</a> *cancellable,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
>GError</a> **error);


</pre>
</div>
<div class="refsect1" lang="en">
<a name="id2856963"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">

  <a
href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject"
>GObject</a>
   +----<a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a>
         +----<a class="link" href="GFilterInputStream.html" title="GFilterInputStream">GFilterInputStream</a>
               +----GBufferedInputStream
                     +----<a class="link" href="GDataInputStream.html" title="GDataInputStream">GDataInputStream</a>
</pre>
</div>
<div class="refsect1" lang="en">
<a name="id2858814"></a><h2>Properties</h2>
<pre class="synopsis">

  "<a class="link" href="GBufferedInputStream.html#GBufferedInputStream--buffer-size">buffer-size</a>"              <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"
>guint</a>                 : Read / Write / Construct
</pre>
</div>
<div class="refsect1" lang="en">
<a name="id2858845"></a><h2>Description</h2>
<p>
Buffered input stream implements <a class="link" href="GFilterInputStream.html" title="GFilterInputStream"><span class="type">GFilterInputStream</span></a> and provides 
for buffered reads. 
</p>
<p>
By default, <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>'s buffer size is set at 4 kilobytes.
</p>
<p>
To create a buffered input stream, use <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-new"><code class="function">g_buffered_input_stream_new()</code></a>, 
or <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-new-sized"><code class="function">g_buffered_input_stream_new_sized()</code></a> to specify the buffer's size at 
construction.
</p>
<p>
To get the size of a buffer within a buffered input stream, use 
<a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-get-buffer-size"><code class="function">g_buffered_input_stream_get_buffer_size()</code></a>. To change the size of a 
buffered input stream's buffer, use
<a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-set-buffer-size"><code class="function">g_buffered_input_stream_set_buffer_size()</code></a>. Note that the buffer's size 
cannot be reduced below the size of the data within the buffer.</p>
<p>

</p>
</div>
<div class="refsect1" lang="en">
<a name="id2858933"></a><h2>Details</h2>
<div class="refsect2" lang="en">
<a name="id2858944"></a><h3>
<a name="GBufferedInputStream-struct"></a>GBufferedInputStream</h3>
<a class="indexterm" name="id2858955"></a><pre class="programlisting">typedef struct _GBufferedInputStream GBufferedInputStream;</pre>
<p>
Implements <a class="link" href="GFilterInputStream.html" title="GFilterInputStream"><span class="type">GFilterInputStream</span></a> with a sized input buffer.</p>
<p>

</p>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2858982"></a><h3>
<a name="g-buffered-input-stream-new"></a>g_buffered_input_stream_new ()</h3>
<a class="indexterm" name="id2858994"></a><pre class="programlisting"><a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a>*       g_buffered_input_stream_new         (<a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a> *base_stream);</pre>
<p>
Creates a new <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a> from the given <em class="parameter"><code>base_stream</code></em>, with 
a buffer set to the default size (4 kilobytes).</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>base_stream</code></em>&#160;:</span></p></td>
<td> a <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> a <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a> for the given <em class="parameter"><code>base_stream</code></em>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2861303"></a><h3>
<a name="g-buffered-input-stream-new-sized"></a>g_buffered_input_stream_new_sized ()</h3>
<a class="indexterm" name="id2861316"></a><pre class="programlisting"><a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a>*       g_buffered_input_stream_new_sized   (<a class="link" href="GInputStream.html" title="GInputStream">GInputStream</a> *base_stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> size);</pre>
<p>
Creates a new <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a> from the given <em class="parameter"><code>base_stream</code></em>, 
with a buffer set to <em class="parameter"><code>size</code></em>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>base_stream</code></em>&#160;:</span></p></td>
<td> a <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
><span class="type">gsize</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> a <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2861438"></a><h3>
<a name="g-buffered-input-stream-get-buffer-size"></a>g_buffered_input_stream_get_buffer_size ()</h3>
<a class="indexterm" name="id2861452"></a><pre class="programlisting"><a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a>               g_buffered_input_stream_get_buffer_size
                                                        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream);</pre>
<p>
Gets the size of the input buffer.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> the current buffer size.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2861520"></a><h3>
<a name="g-buffered-input-stream-set-buffer-size"></a>g_buffered_input_stream_set_buffer_size ()</h3>
<a class="indexterm" name="id2861534"></a><pre class="programlisting">void                g_buffered_input_stream_set_buffer_size
                                                        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> size);</pre>
<p>
Sets the size of the internal buffer of <em class="parameter"><code>stream</code></em> to <em class="parameter"><code>size</code></em>, or to the 
size of the contents of the buffer. The buffer can never be resized 
smaller than its current contents.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>size</code></em>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
><span class="type">gsize</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2861634"></a><h3>
<a name="g-buffered-input-stream-get-available"></a>g_buffered_input_stream_get_available ()</h3>
<a class="indexterm" name="id2861647"></a><pre class="programlisting"><a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a>               g_buffered_input_stream_get_available
                                                        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream);</pre>
<p>
Gets the size of the available data within the stream.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> size of the available stream. 
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2861716"></a><h3>
<a name="g-buffered-input-stream-peek-buffer"></a>g_buffered_input_stream_peek_buffer ()</h3>
<a class="indexterm" name="id2861730"></a><pre class="programlisting">const void*         g_buffered_input_stream_peek_buffer (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> *count);</pre>
<p>
Returns the buffer with the currently available bytes. The returned
buffer must not be modified and will become invalid when reading from
the stream or filling the buffer.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> a <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>count</code></em>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
><span class="type">gsize</span></a> to get the number of bytes available in the buffer.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> read-only buffer
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2861830"></a><h3>
<a name="g-buffered-input-stream-peek"></a>g_buffered_input_stream_peek ()</h3>
<a class="indexterm" name="id2861843"></a><pre class="programlisting"><a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a>               g_buffered_input_stream_peek        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         void *buffer,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> offset,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
>gsize</a> count);</pre>
<p>
Peeks in the buffer, copying data of size <em class="parameter"><code>count</code></em> into <em class="parameter"><code>buffer</code></em>, 
offset <em class="parameter"><code>offset</code></em> bytes.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> a <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>buffer</code></em>&#160;:</span></p></td>
<td> a pointer to an allocated chunk of memory.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>offset</code></em>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
><span class="type">gsize</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>count</code></em>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
><span class="type">gsize</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gsize"
><span class="type">gsize</span></a> of the number of bytes peeked, or <code class="literal">-1</code> on error.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2862023"></a><h3>
<a name="g-buffered-input-stream-fill"></a>g_buffered_input_stream_fill ()</h3>
<a class="indexterm" name="id2862036"></a><pre class="programlisting"><a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
>gssize</a>              g_buffered_input_stream_fill        (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
>gssize</a> count,
                                                         <a class="link" href="GCancellable.html" title="GCancellable">GCancellable</a> *cancellable,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
>GError</a> **error);</pre>
<p>
Tries to read <em class="parameter"><code>count</code></em> bytes from the stream into the buffer. 
Will block during this read.
</p>
<p>
If <em class="parameter"><code>count</code></em> is zero, returns zero and does nothing. A value of <em class="parameter"><code>count</code></em>
larger than <a
href="/usr/share/gtk-doc/html/glib/glib-Limits-of-Basic-Types.html#G-MAXSSIZE:CAPS"
><code class="literal">G_MAXSSIZE</code></a> will cause a <a class="link" href="gio-GIOError.html#G-IO-ERROR-INVALID-ARGUMENT:CAPS"><code class="literal">G_IO_ERROR_INVALID_ARGUMENT</code></a> error.
</p>
<p>
On success, the number of bytes read into the buffer is returned.
It is not an error if this is not the same as the requested size, as it
can happen e.g. near the end of a file. Zero is returned on end of file
(or if <em class="parameter"><code>count</code></em> is zero),  but never otherwise.
</p>
<p>
If <em class="parameter"><code>cancellable</code></em> is not <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>, then the operation can be cancelled by
triggering the cancellable object from another thread. If the operation
was cancelled, the error <a class="link" href="gio-GIOError.html#G-IO-ERROR-CANCELLED:CAPS"><code class="literal">G_IO_ERROR_CANCELLED</code></a> will be returned. If an
operation was partially finished when the operation was cancelled the
partial result will be returned, without an error.
</p>
<p>
On error -1 is returned and <em class="parameter"><code>error</code></em> is set accordingly.
</p>
<p>
For the asynchronous, non-blocking, version of this function, see 
<a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-fill-async"><code class="function">g_buffered_input_stream_fill_async()</code></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>count</code></em>&#160;:</span></p></td>
<td> the number of bytes that will be read from the stream.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>cancellable</code></em>&#160;:</span></p></td>
<td> optional <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> object, <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a> to ignore.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></p></td>
<td> location to store the error occuring, or <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a> to ignore.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> the number of bytes read into <em class="parameter"><code>stream</code></em>'s buffer, up to <em class="parameter"><code>count</code></em>, 
    or -1 on error.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2862321"></a><h3>
<a name="g-buffered-input-stream-fill-async"></a>g_buffered_input_stream_fill_async ()</h3>
<a class="indexterm" name="id2862335"></a><pre class="programlisting">void                g_buffered_input_stream_fill_async  (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
>gssize</a> count,
                                                         int io_priority,
                                                         <a class="link" href="GCancellable.html" title="GCancellable">GCancellable</a> *cancellable,
                                                         <a class="link" href="GAsyncResult.html#GAsyncReadyCallback">GAsyncReadyCallback</a> callback,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
>gpointer</a> user_data);</pre>
<p>
Reads data into <em class="parameter"><code>stream</code></em>'s buffer asynchronously, up to <em class="parameter"><code>count</code></em> size.
<em class="parameter"><code>io_priority</code></em> can be used to prioritize reads. For the synchronous
version of this function, see <a class="link" href="GBufferedInputStream.html#g-buffered-input-stream-fill"><code class="function">g_buffered_input_stream_fill()</code></a>.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>count</code></em>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
><span class="type">gssize</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>io_priority</code></em>&#160;:</span></p></td>
<td> the <a class="link" href="gio-GIOScheduler.html#io-priority">I/O priority</a> 
    of the request.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>cancellable</code></em>&#160;:</span></p></td>
<td> optional <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> object
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>callback</code></em>&#160;:</span></p></td>
<td> a <a class="link" href="GAsyncResult.html#GAsyncReadyCallback"><span class="type">GAsyncReadyCallback</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>user_data</code></em>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"
><span class="type">gpointer</span></a>.
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2862562"></a><h3>
<a name="g-buffered-input-stream-fill-finish"></a>g_buffered_input_stream_fill_finish ()</h3>
<a class="indexterm" name="id2862576"></a><pre class="programlisting"><a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
>gssize</a>              g_buffered_input_stream_fill_finish (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a class="link" href="GAsyncResult.html" title="GAsyncResult">GAsyncResult</a> *result,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
>GError</a> **error);</pre>
<p>
Finishes an asynchronous read.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> a <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>result</code></em>&#160;:</span></p></td>
<td> a <a class="link" href="GAsyncResult.html" title="GAsyncResult"><span class="type">GAsyncResult</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
><span class="type">GError</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> a <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gssize"
><span class="type">gssize</span></a> of the read stream, or <code class="literal">-1</code> on an error. 
</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2" lang="en">
<a name="id2862716"></a><h3>
<a name="g-buffered-input-stream-read-byte"></a>g_buffered_input_stream_read_byte ()</h3>
<a class="indexterm" name="id2862730"></a><pre class="programlisting">int                 g_buffered_input_stream_read_byte   (<a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream">GBufferedInputStream</a> *stream,
                                                         <a class="link" href="GCancellable.html" title="GCancellable">GCancellable</a> *cancellable,
                                                         <a
href="/usr/share/gtk-doc/html/glib/glib-Error-Reporting.html#GError"
>GError</a> **error);</pre>
<p>
Tries to read a single byte from the stream or the buffer. Will block
during this read.
</p>
<p>
On success, the byte read from the stream is returned. On end of stream
-1 is returned but it's not an exceptional error and <em class="parameter"><code>error</code></em> is not set.
</p>
<p>
If <em class="parameter"><code>cancellable</code></em> is not <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a>, then the operation can be cancelled by
triggering the cancellable object from another thread. If the operation
was cancelled, the error <a class="link" href="gio-GIOError.html#G-IO-ERROR-CANCELLED:CAPS"><code class="literal">G_IO_ERROR_CANCELLED</code></a> will be returned. If an
operation was partially finished when the operation was cancelled the
partial result will be returned, without an error.
</p>
<p>
On error -1 is returned and <em class="parameter"><code>error</code></em> is set accordingly.</p>
<p>

</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>stream</code></em>&#160;:</span></p></td>
<td> <a class="link" href="GBufferedInputStream.html" title="GBufferedInputStream"><span class="type">GBufferedInputStream</span></a>.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>cancellable</code></em>&#160;:</span></p></td>
<td> optional <a class="link" href="GCancellable.html" title="GCancellable"><span class="type">GCancellable</span></a> object, <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a> to ignore.
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>error</code></em>&#160;:</span></p></td>
<td> location to store the error occuring, or <a
href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"
><code class="literal">NULL</code></a> to ignore.
</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span>&#160;:</span></p></td>
<td> the byte read from the <em class="parameter"><code>stream</code></em>, or -1 on end of stream or error.
</td>
</tr>
</tbody>
</table></div>
</div>
</div>
<div class="refsect1" lang="en">
<a name="id2862928"></a><h2>Property Details</h2>
<div class="refsect2" lang="en">
<a name="id2862939"></a><h3>
<a name="GBufferedInputStream--buffer-size"></a>The <code class="literal">"buffer-size"</code> property</h3>
<a class="indexterm" name="id2862955"></a><pre class="programlisting">  "buffer-size"              <a
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"
>guint</a>                 : Read / Write / Construct</pre>
<p>The size of the backend buffer.</p>
<p>Allowed values: &gt;= 1</p>
<p>Default value: 4096</p>
</div>
</div>
<div class="refsect1" lang="en">
<a name="id2862986"></a><h2>See Also</h2>
<a class="link" href="GFilterInputStream.html" title="GFilterInputStream"><span class="type">GFilterInputStream</span></a>, <a class="link" href="GInputStream.html" title="GInputStream"><span class="type">GInputStream</span></a>
</div>
<div class="refsect1" lang="en">
<a name="id2863008"></a><div class="refsect2" lang="en"><a name="id2863009"></a></div>
<hr>
<div class="refsect2" lang="en"><a name="id2863010"></a></div>
</div>
</div>
</body>
</html>
